package com.sgb.kjwl.api.service;

import com.sgb.kjwl.model.entity.AllFunction;
import com.sgb.kjwl.model.entity.CarInfo;
import com.sgb.kjwl.model.entity.ChoiceOppositePersonEntity;
import com.sgb.kjwl.model.entity.DriverInfo;
import com.sgb.kjwl.model.entity.GoodsOrderEntity;
import com.sgb.kjwl.model.entity.MyCarInfoEntity;
import com.sgb.kjwl.model.entity.ProListEntity;
import com.sgb.kjwl.model.entity.UserMsgEntity;
import com.sgb.kjwl.model.entity.home.MapSourceEntity;
import com.sgb.kjwl.model.entity.lease.CompanyInfoEntity;
import com.sgb.kjwl.model.entity.map.MapCarInfoEntity;
import com.sgb.kjwl.model.entity.self.BiddingOrderEntity;
import com.sgb.kjwl.model.entity.self.BooleanEntity;
import com.sgb.kjwl.model.entity.self.BusinessSubscribeEntity;
import com.sgb.kjwl.model.entity.self.CarriageInfoPublishEntity;
import com.sgb.kjwl.model.entity.self.CarriagePushEntity;
import com.sgb.kjwl.model.entity.self.EnergyTypeEntity;
import com.sgb.kjwl.model.entity.self.GoodsMangeResultEntity;
import com.sgb.kjwl.model.entity.self.GoodsSelectEntity;
import com.sgb.kjwl.model.entity.self.GoodsSourceDetail;
import com.sgb.kjwl.model.entity.self.HistoryOfferEntity;
import com.sgb.kjwl.model.entity.self.LicenceOCREntity;
import com.sgb.kjwl.model.entity.self.MotorcadeSimpleEntity;
import com.sgb.kjwl.model.entity.self.MyOfferDetailsEntity;
import com.sgb.kjwl.model.entity.self.MyOfferEntity2;
import com.sgb.kjwl.model.entity.self.OfferDetailsEntity;
import com.sgb.kjwl.model.entity.self.OrderQuoteEntity;
import com.sgb.kjwl.model.entity.self.OwnPathEntity;
import com.sgb.kjwl.model.entity.self.ProDriverDetailsEntity;
import com.sgb.kjwl.model.entity.self.ProprietaryDriverEntity;
import com.sgb.kjwl.model.entity.self.SubSetEntity;
import com.sgb.kjwl.model.entity.self.TruckApplyEntity;
import com.sgb.kjwl.model.entity.self.TypeChooseEntity;
import com.sgb.kjwl.model.entity.self.VerifyDriverEntity;
import com.sgb.kjwl.model.entity.transport.AffiliatedFCarEntity;
import com.sgb.kjwl.model.entity.transport.AffiliatedFDetailsListEntity;
import com.sgb.kjwl.model.entity.transport.AffiliatedFDriverEntity;
import com.sgb.kjwl.model.entity.transport.AgreedCarOfferEntity;
import com.sgb.kjwl.model.entity.transport.AttachmentListEntity;
import com.sgb.kjwl.model.entity.transport.BiddingOrderDetailsEntity;
import com.sgb.kjwl.model.entity.transport.CarHallEntity;
import com.sgb.kjwl.model.entity.transport.CarTypeAndCarLength;
import com.sgb.kjwl.model.entity.transport.CargoDistanceEntity;
import com.sgb.kjwl.model.entity.transport.CargoEntity;
import com.sgb.kjwl.model.entity.transport.CarriageInfo;
import com.sgb.kjwl.model.entity.transport.CarrierBusinessEntity;
import com.sgb.kjwl.model.entity.transport.CarrierDetailsEntity;
import com.sgb.kjwl.model.entity.transport.CheckStateEntity;
import com.sgb.kjwl.model.entity.transport.CompanyGoodsOrderEntity;
import com.sgb.kjwl.model.entity.transport.CompanyInvoiceEntity;
import com.sgb.kjwl.model.entity.transport.DriverAuthEntity;
import com.sgb.kjwl.model.entity.transport.DriverBindRecordEntity;
import com.sgb.kjwl.model.entity.transport.DriverWorkbenchEntity;
import com.sgb.kjwl.model.entity.transport.DrivingLicenseOCREntity;
import com.sgb.kjwl.model.entity.transport.FreightProEntity;
import com.sgb.kjwl.model.entity.transport.GoodsInfoEntity;
import com.sgb.kjwl.model.entity.transport.GoodsInfoTypeEntity3;
import com.sgb.kjwl.model.entity.transport.InquiryEntity;
import com.sgb.kjwl.model.entity.transport.InvoiceRateEntity;
import com.sgb.kjwl.model.entity.transport.LinkedEntity;
import com.sgb.kjwl.model.entity.transport.ManageEntity;
import com.sgb.kjwl.model.entity.transport.ManageListEntity;
import com.sgb.kjwl.model.entity.transport.MapCarEntity;
import com.sgb.kjwl.model.entity.transport.MapSourcesEntity;
import com.sgb.kjwl.model.entity.transport.MotorcadListEntity;
import com.sgb.kjwl.model.entity.transport.OwnerCarriageDetail;
import com.sgb.kjwl.model.entity.transport.OwnerGoodsDetailInfo;
import com.sgb.kjwl.model.entity.transport.OwnerWorkbenchEntity;
import com.sgb.kjwl.model.entity.transport.PayInfoEntity;
import com.sgb.kjwl.model.entity.transport.QuotedListOwnerViewEntity;
import com.sgb.kjwl.model.entity.transport.SearchGoodsEntity;
import com.sgb.kjwl.model.entity.transport.TeamRespVoEntity;
import com.sgb.kjwl.model.entity.transport.TransportOrderEntity;
import com.sgb.kjwl.model.entity.transport.VehicleDetail;
import com.sgb.kjwl.model.entity.transport.VehicleHallMapEntity;
import com.sgb.kjwl.model.entity.transport.order.MyOrderEntity;
import com.sgb.kjwl.model.entity.user.AddressEntity;
import com.sgb.kjwl.model.response.ListResponse2;
import com.sgb.kjwl.model.response.ListResponseV1;
import com.sgb.kjwl.view.ui.activity.transport.OperateEnquiryDetail;
import com.swgk.core.base.model.entity.BaseEntity;
import com.swgk.core.base.model.entity.ListResponse;
import com.swgk.core.view.entity.PermissionEntity;

import java.util.List;
import java.util.Map;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;

public interface LogisticsAPI {
    //竞价找货-司机报价
    @POST("logistics/operate/goodsOffer/offer")
    Call<BaseEntity<String>> goodsOffer(@Body GoodsOrderEntity goodsOrderEntity);

    //竞价找货-司机报价
    @POST("logistics/operate/goodsOffer/bidding/offer")
    Call<BaseEntity<String>> goodsBiddingOffer(@Body GoodsOrderEntity goodsOrderEntity);

    //普通货源-司机报价
    @POST("logistics/operate/goodsOffer/general/offer")
    Call<BaseEntity<String>> goodsGeneralOffer(@Body GoodsOrderEntity goodsOrderEntity);

    //货车承运
    @POST("logistics/operate/carriage/operateCarrierBusinessList")
    Call<BaseEntity<CarrierBusinessEntity>> getoperateCarrierBusinessList(@Body Map map);

    //历史承运列表
    @POST("logistics/operate/carriage/info")
    Call<BaseEntity<ListResponse<List<CarriageInfoPublishEntity>>>> myCarrierHistoryList(@Body Map map);

    //推送承运 上传提交
    @POST("logistics/operate/carriage/pushCarrier")
    Call<BaseEntity<String>> carrierPushCarrier(@Body Map map);

    //承运信息详情
    @GET("logistics/operate/carriage/operateCarriageDetails")
    Call<BaseEntity<OwnerCarriageDetail>> getCarriageDetail(@Query("carrierNo") String carrierNo);

    //我的报价列表（车主）
    @POST("logistics/operate/goodsOffer/myOfferOrder")
    Call<BaseEntity<ListResponse<List<MyOfferEntity2>>>> getMyOfferList(@Body Map<String, Object> map);

    //检查车辆的可使用状态
    @GET("logistics/operate/carOffer/agreedCarOffer")
    Call<BaseEntity<AgreedCarOfferEntity>> checkCarStatues(@QueryMap Map<String, Object> map);

    //我的历史报价（车主）
    @GET("logistics/operate/goodsOffer/offHistory")
    Call<BaseEntity<ListResponse<List<HistoryOfferEntity>>>> getMyOfferHistoryList(@Query("goodsSourceNo") String no, @Query("limit") int limit, @Query("page") int page,
                                                                                   @Query("companyNo") String companyNo, @Query("teamNo") String teamNo);

    //获取运输订单详情
    @GET("logistics/operate/order/operateShippingOrderDetail")
    Call<BaseEntity<TransportOrderEntity>> getShippingOrderDetail(@QueryMap Map<String, Object> map);

    //获取订单货主列表
    @GET("logistics/operate/order/operateGoodsOwnerShippingOrder")
    Call<BaseEntity<ListResponse<List<MyOrderEntity>>>> getGoodsOwnerOrder(@QueryMap Map<String, Object> map);

    //获取订单车主列表
    @GET("logistics/operate/order/operateCarOwnerShippingOrder")
    Call<BaseEntity<ListResponse<List<MyOrderEntity>>>> getGoodsDriverOrder(@QueryMap Map<String, Object> map);

    //货车报名
    @POST("logistics/operate/goodsOffer/getAllDriverOfferList")
    Call<BaseEntity<ListResponse<List<TruckApplyEntity>>>> getApplyTruckList(@Body Map map);

    //报价车主详情
    @GET("logistics/operate/goodsOffer/operateQuoteOwnerDetail")
    Call<BaseEntity<OfferDetailsEntity>> getOfferOwnerDetails(@Query("goodsOfferNo") String no);

    //报价车主列表（竞价货源）
    @POST("logistics/operate/goodsOffer/operateQuoteOwner")
    Call<BaseEntity<ListResponse2<List<OrderQuoteEntity>>>> getOfferOwnerList(@Body Map map);

    //报价车主列表（普通货源）——非货主视角查看报价
    @POST("logistics/operate/goodsOffer/operateQuoteViewNotOwner")
    Call<BaseEntity<ListResponse2<List<OrderQuoteEntity>>>> getOfferOwnerThirdList(@Body Map map);

    //货主报价单位和接单单位 列表
    @POST("logistics/operate/goodsOffer/ownerQuotationPriceOrOrders")
    Call<BaseEntity<ListResponse2<List<OrderQuoteEntity>>>> getownerQuotationPriceOrOrders(@Body Map map);

    //我的报价详情
    @GET("logistics/operate/goodsOffer/operateQuoteOwnerDetail")
    Call<BaseEntity<MyOfferDetailsEntity>> getOfferDetails(@Query("goodsOfferNo") String no);

    //货主同意报价（竞价）
    @POST("logistics/operate/goodsOffer/operateConfirmOffer")
    Call<BaseEntity> shipperAgreeOffer(@Body Map map);

    //货主同意报价（普通）
    @POST("logistics/operate/goodsOffer/general/agreed/offer")
    Call<BaseEntity> agreeGeneralOffer(@Body Map map);

    //线下收款凭证上传
    @POST("logistics/operate/order/offline/voucher")
    Call<BaseEntity> offlineUploadCredentials(@Body Map map);

    //司机详情
    @POST("logistics/operate/driver/detailOfDriver")
    Call<BaseEntity<DriverInfo>> getDriverInfo();

    //司机认证
    @POST("logistics/operate/driver/driverApprove")
    Call<BaseEntity> authDriver(@Body Map map);

    //司机认证 OCR识别返回
    @GET("logistics/operate/driver/driverOcrReturn")
    Call<BaseEntity<LicenceOCREntity>> getOCRLicenceInfo(@Query("mainDriverLicense") String mainDriverLicense, @Query("viceDriverLicense") String viceDriverLicense);

    //货源搜索
    @POST("logistics/operate/index/operateGoodsSourceList")
    Call<BaseEntity<ProListEntity<List<GoodsInfoEntity>>>> getFilterGoodsSourceList(@Body Map map);

    //竞价货源列表
    @POST("logistics/operate/index/operateGoodsSourceList")
    Call<BaseEntity<ProListEntity<List<GoodsInfoEntity>>>> getCompeteFindGoods(@Body Map map);

    //单条路线数据操作（开启/禁用,删除）
    @POST("logistics/operate/goodsBusiness")
    Call<BaseEntity> settingPath(@Body Map map);

    //商机订阅-设置
    @POST("logistics/operate/goodsBusiness/goodsSubscriptionDetail")
    Call<BaseEntity<SubSetEntity>> goodsSubscriptionDetail(@Body Map<String, Object> map);

    //我的路线列表
    @GET("logistics/operate/goodsBusiness/list")
    Call<BaseEntity<ListResponse<List<OwnPathEntity>>>> getMyPaths(@Query("limit") String limit, @Query("page") String page);

    //货源订阅列表
    @POST("logistics/operate/goodsBusiness/operateGoodsSubscription")
    Call<BaseEntity<ListResponse<List<BusinessSubscribeEntity>>>> getBusinessSubscribeList(@Body Map map);

    //新增/编辑路线
    @POST("logistics/operate/goodsBusiness/operateSetGoodsSubscription")
    Call<BaseEntity<BooleanEntity>> addOrEditPaths(@Body OwnPathEntity entity);

    //根据货物类型查车型
    @GET("logistics/operate/goodsType/carTypeByGoodsType")
    Call<BaseEntity<List<CarTypeAndCarLength>>> getCarTypeAndCarLengthList(@Query("goodsTypeNo") String goodsTypeNo);

    /**
     * 根据货物类型查车型2
     *
     * @param goodsTypeNo
     * @return 没有查到相关联的车型车长回返Null
     */
    @GET("logistics/operate/goodsType/goodsTypeQueryMotorcycleType")
    Call<BaseEntity<List<CarTypeAndCarLength>>> getCarTypeAndLengthList(@Query("goodsTypeNo") String goodsTypeNo);

    //获取车型车长
    @GET("logistics/operate/goodsType/carTypeByGoodsType")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> getCarTypeAndLen(@Query("goodsTypeNo") String goodsTypeNo);

    //根据货物类型获取车型车长
    @GET("logistics/operate/goodsType/carTypesByGoodsType")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> getCarTypesAndLen(@Query("goodsTypeNo") String[] goodsTypeNo);

    //查询历史货源
    @POST("logistics/operate/goodsSource/appHistoryGoodsSource")
    Call<BaseEntity<ListResponse<List<CargoEntity>>>> getHistoryCargo(@Body Map<String, Object> map);

    /**
     * 查询货源列表
     *
     * @param goodsSourceNo 排在第一位的货源No
     * @param pattern       货源模式： 0 普通模式 1 竞价模式
     * @return
     */
    @GET("logistics/operate/goodsSource/view/owner")
    Call<BaseEntity<List<FreightProEntity>>> getCargoList(@Query("goodsSourceNo") String goodsSourceNo, @Query("pattern") Integer pattern);


    //查询报价单位列表（货主视角）-竞价货源
    @POST("logistics/operate/goodsOffer/operateQuoteViewOwner")
    Call<BaseEntity<QuotedListOwnerViewEntity>> getTickSizeList(@Body Map<String, Object> map);

    //查询报价单位列表（货主视角）-普通货源
    @POST("logistics/operate/goodsOffer/operateQuoteViewOwnerOrdinary")
    Call<BaseEntity<QuotedListOwnerViewEntity>> getOfferUnitList(@Body Map<String, Object> map);


    //发布货源计算距离
    @POST("logistics/operate/goodsSource/calculateDistance")
    Call<BaseEntity<CargoDistanceEntity>> calculateDistance(@Body Map<String, Object> map);

    //删除货源
    @GET("logistics/operate/goodsSource/operateGoodsSourceDel")
    Call<BaseEntity<String>> deleteGoods(@Query("sourceId") String sourceId);

    //货主普通、竞价货源详情
    @GET("logistics/operate/goodsSource/operateGoodsSourceDetail")
    Call<BaseEntity<OwnerGoodsDetailInfo>> getManagerSourceDetail(@Query("isLogin") String isLogin, @Query("no") String no);

    /**
     * 请求竞价订单详情
     *
     * @param isGoodsOwner 0为货主查询 1为企业/团队/车主查询
     * @param no           订单编号
     */
    @GET("logistics/operate/order/bidingOrderDetails")
    Call<BaseEntity<BiddingOrderDetailsEntity>> getBiddingOrderDetails(@Query("isGoodsOwner") Integer isGoodsOwner, @Query("orderNo") String no);

    //货源详情
    @GET("logistics/operate/goodsSource/operateGoodsSourceDetail")
    Call<BaseEntity<CargoEntity>> getCargoDetail(@Query("isLogin") String isLogin, @Query("no") String no);

    //货源详情 2.1.1 前台和个人中心(1)新增source参数其他不变
    @GET("logistics/operate/goodsSource/operateGoodsSourceDetail")
    Call<BaseEntity<GoodsSourceDetail>> getGoodsSourceDetail(@Query("isLogin") String isLogin, @Query("no") String no, @Query("source") Integer source);

    /**
     * 我的报价 -判断当前用户所在公司或团队 是否已对该货源报价
     *
     * @param goodsSourceNo 货源no
     * @param type          接单报价类型 0：报价 2：接单
     */
    @GET("logistics/operate/goodsOffer/check/offer/has")
    Call<BaseEntity> checkOffer(@Query("goodsSourceNo") String goodsSourceNo, @Query("type") int type);

    //货源上下架
    @GET("logistics/operate/goodsSource/operateGoodsSourceUpDown")
    Call<BaseEntity> upAndDownGoods(@Query("no") String no);

    //货主管理 - 普通货源||竞价货源 列表
    @POST("logistics/operate/goodsSource/operateGoodsSourceList")
    Call<BaseEntity<GoodsMangeResultEntity>> getGoodsManageList(@Body Map map);

    //搜索货物
    @POST("logistics/operate/goodsSource/operateSearchByKeyword")
    Call<BaseEntity<ProListEntity<List<SearchGoodsEntity>>>> getSearchList(@Body Map map);

    //搜索找车
    @POST("logistics/operate/driverAuth/operateSearchByKeyword")
    Call<BaseEntity<ProListEntity<List<CarHallEntity>>>> searchLogisticCars(@Body Map map);

    //发布/编辑普通/竞价货源
    @POST("logistics/operate/goodsSource/operatePublish")
    Call<BaseEntity> releaseCargo(@Body Map<String, Object> map);

    //竞价订单列表-货主
    @GET("logistics/operate/order/shipperBiddingOrder")
    Call<BaseEntity<ListResponse<List<BiddingOrderEntity>>>> getBiddingOrderOwnerList(@Query("page") String page, @Query("limit") String limit,
                                                                                      @Query("terminal") String terminal, @Query("companyNo") String companyNo,
                                                                                      @Query("teamNo") String teamNo, @Query("userNo") String userNo);

    //竞价订单列表-承运方
    @GET("logistics/operate/order/bidingOrder")
    Call<BaseEntity<ListResponse<List<BiddingOrderEntity>>>> getBiddingOrderCarriageList(@Query("page") String page, @Query("limit") String limit,
                                                                                         @Query("terminal") String terminal, @Query("companyNo") String companyNo,
                                                                                         @Query("teamNo") String teamNo, @Query("userNo") String userNo);

    //待办订单 车主/货主运输订单
    @GET("logistics/operate/order/pendingOrder")
    Call<BaseEntity<ListResponse2<List<MyOrderEntity>>>> getPendingOrder(@QueryMap Map<String, Object> map);

    //获取编辑时承运详情
    @GET("logistics/freight/carriage/getByNo")
    Call<BaseEntity<CarriagePushEntity>> getPushCarriageDetail(@Query("no") String carrierNo);

    //历史承运列表
    @POST("logistics/operate/carriage/info")
    Call<BaseEntity<ListResponseV1<List<CarriagePushEntity>>>> getCarrierHistoryList(@Body Map map);

    //推送承运 上传提交
    @POST("logistics/operate/carriage/pushCarrier")
    Call<BaseEntity<String>> pushCarrier(@Body Map map);

    //获取发票列表信息
    @GET("logistics/freight/invoiceList")
    Call<BaseEntity<List<InvoiceRateEntity>>> getInvoiceListInfo();

    //删除承运
    @GET("logistics/freight/carriage/deleteCarrier")
    Call<BaseEntity> getDeleteCarrier(@Query("no") String no);

    //可视找货
    //查询所有的货物类型
    @GET("logistics/operate/goodsType/findCarTypeList")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> getAllGoodsType();

    //订阅路线-新增路线
    //查询所有的货物类型
    @GET("logistics/operate/goodsType/findCarTypeList")
    Call<BaseEntity<List<GoodsSelectEntity>>> goodsType();

    //订阅路线-新增路线
    //查询一级货物类型(不包括未启用的)
    @GET("logistics/operate/goodsType/findCarTypeList")
    Call<BaseEntity<List<GoodsSelectEntity>>> findGoodsTypeList();

    //查询所有的车型
    @GET("logistics/operate/carType/findCarTypeList")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> getAllCarType();

    //获取所有车辆
    @GET("logistics/operate/driverAuth/select")
    Call<BaseEntity<List<CarInfo>>> getCarInfo();

    //根据车型查车长(单个车型)
    @GET("logistics/operate/carType/carLenByCarType")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> getCarLenByType(@Query("carTypeNo") String carType);

    //根据车型查车长(多个车型)
    @POST("logistics/operate/carType/carLenByCarTypeIndex")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> getCarLenByTypes(@Body List<String> carTypes);

    //查询车辆功能
    @GET("logistics/operate/driverAuth/carFunctionConfig/all")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> getCarFunction();

    //查询车辆功能
    @GET("logistics/operate/driverAuth/carFunctionConfig/all")
    Call<BaseEntity<List<AllFunction>>> getCarFunction02();

    //地图找车
    @POST("logistics/operate/index/operateVehicleHallMaps")
    Call<BaseEntity<List<MapCarInfoEntity>>> searchCarByMap(@Body Map<String, Object> map);

    //地图找货
    @GET("logistics/operate/index/operateVehicleHallMap")
    Call<BaseEntity<List<MapSourceEntity>>> searchSourceByMap(@Query("searchLongitude") double searchLongitude,//搜索经度
                                                              @Query("searchLatitude") double searchLatitude,//搜索纬度
                                                              @Query("goodsModeNos") String goodsModeNos,//货物类型编号，逗号分隔
                                                              @Query("minWeight") String minWeight,//货物重量-最小吨位
                                                              @Query("maxWeight") String maxWeight,//货物重量-最大吨位
                                                              @Query("carTypeNos") String carTypeNos,//车型编号,逗号分割
                                                              @Query("carLenNos") String carLenNos,//车长编号,逗号分割
                                                              @Query("shipmentTime") String shipmentTime,//装货时间
                                                              @Query("shipmentEndTime") String shipmentEndTime,//装货结束时间
                                                              @Query("destProvinceNo") String destProvinceNo,//装货结束时间
                                                              @Query("destCityNo") String destCityNo,//装货结束时间
                                                              @Query("destDistrictNo") String destDistrictNo,//装货结束时间
                                                              @Query("ipLongitude") String ipLongitude,//IP经度 （计算距离）
                                                              @Query("ipLatitude") String ipLatitude,//IP纬度 （计算距离）
                                                              @Query("radius") String radius);//筛选范围（米）

    //地图找货
    @POST("logistics/operate/index/operateVisualFindGoods")
    Call<BaseEntity<List<MapSourcesEntity>>> getNewMapGoodsSourcesList(@Body Map map);

    //可视找车
    @POST("logistics/operate/index/operateVisualFindCars")
    Call<BaseEntity<List<VehicleHallMapEntity>>> getNewMapCarsList(@Body Map map);

    //竞价找车--地图找车
    @POST("logistics/operate/index/operateBiddingFindCarsMaps")
    Call<BaseEntity<List<MapCarEntity>>> getMapFindCar(@Body Map map);

    //竞价找车--大厅/新地图竞价找车
    @POST("logistics/operate/index/operateBiddingFindCars")
    Call<BaseEntity<ProListEntity<List<CarriageInfo>>>> getFilterMapCarList(@Body Map map);

    //货主管理 我的询价（司机询价->货主对司机的询价）
    @POST("logistics/operate/carOffer/operateMyInquiryList")
    Call<BaseEntity<ListResponse<List<InquiryEntity>>>> getoperateMyInquiryList(@Body Map map);

    //询价列表 - 询价详情页
    @GET("logistics/operate/carOffer/operateMyInquiryDetails")
    Call<BaseEntity<OperateEnquiryDetail>> getoperateMyInquiryDetails(@Query("carOfferNo") String carOfferNo, @Query("isGoodsOwner") boolean isGoodsOwner);

    //地图找货
    @GET("logistics/operate/index/operateVehicleHallMap")
    Call<BaseEntity<List<MapSourcesEntity>>> getNewHallMapGoodsSourcesList(@Query("searchLatitude") double searchLatitude, @Query("searchLongitude") double searchLongitude,
                                                                           @Query("radius") float radius);

    //车辆认证
    @POST("logistics/operate/driverAuth/operateCarAuth")
    Call<BaseEntity<DriverAuthEntity>> operateDriverAuth(@Body Map<String, Object> map);

    //司机角色-车辆详情
    @GET("logistics/operate/driverAuth/operateDriverDetail")
    Call<BaseEntity<MyCarInfoEntity>> getJingDriverDetail(@Query("no") long no);

    //获取公司发票列表
    @GET("logistics/operate/invoiceInfoList")
    Call<BaseEntity<List<CompanyInvoiceEntity>>> getCompanyInvoiceList();

    //获取个人发票列表
    @POST("logistics/operate/personalInvoiceInfo/findByCompanyName")
    Call<BaseEntity<List<CompanyInvoiceEntity>>> getPersonInvoiceList();

    //获取发票列表信息
    @POST("logistics/operate/wlInvoiceRequire/invoiceSplice")
    Call<BaseEntity<List<InvoiceRateEntity>>> getInvoiceListInfo(@Body Map<String, Object> map);

    //获取企业详情信息
    @GET("logistics/operate/company/detail")
    Call<BaseEntity<CompanyInfoEntity>> getCompanyDetail(@Query("companyNo") String companyNo);

    @POST("logistics/operate/carOffer/operateEnquiryList")
    Call<BaseEntity<ListResponse<List<InquiryEntity>>>> getoperateEnquiryList(@Body Map map);

    //获取车辆列表
    @GET("logistics/operate/driverAuth/vehicleHallList")
    Call<BaseEntity<ProListEntity<List<CarHallEntity>>>> getCarList(@Query("page") String page,
                                                                    @Query("limit") String limit,
                                                                    @Query("keyWord") String keyWord,
                                                                    @Query("isIndexSearch") String isIndexSearch,
                                                                    @Query("isAuthorization") String isAuthorization,
                                                                    @Query("longitude") String longitude,
                                                                    @Query("latitude") String latitude,
                                                                    @Query("shipProvinceNo") String shipProvinceNo,
                                                                    @Query("shipCityNo") String shipCityNo,
                                                                    @Query("shipDistrictNo") String shipDistrictNo,
                                                                    @Query("carLenNo") String carLenNo,
                                                                    @Query("carTypeNo") String carTypeNo,
                                                                    @Query("functionNos") String functionNos,
                                                                    @Query("needVideo") Integer needVideo,
                                                                    @Query("shipmentTime") Long shipmentTime,
                                                                    @Query("shipmentEndTime") Long shipmentEndTime);

    /**
     * 获取车辆列表
     * 前台主--物流经营--展示自营车辆列表，需要传不同身份的no
     *
     * @param companyNo
     * @param teamNo
     * @param userNo
     * @return
     */
    @GET("logistics/operate/driverAuth/vehicleHallList")
    Call<BaseEntity<ProListEntity<List<CarHallEntity>>>> getCarList(@Query("page") String page,
                                                                    @Query("limit") String limit,
                                                                    @Query("searchType") String searchType,
                                                                    @Query("companyNo") String companyNo,
                                                                    @Query("teamNo") String teamNo,
                                                                    @Query("userNo") String userNo,
                                                                    @Query("needVideo") Integer needVideo,
                                                                    @Query("keyWord") String keyWord,
                                                                    @Query("isIndexSearch") String isIndexSearch,
                                                                    @Query("isAuthorization") String isAuthorization,
                                                                    @Query("longitude") String longitude,
                                                                    @Query("latitude") String latitude,
                                                                    @Query("shipProvinceNo") String shipProvinceNo,
                                                                    @Query("shipCityNo") String shipCityNo,
                                                                    @Query("shipDistrictNo") String shipDistrictNo,
                                                                    @Query("carLenNo") String carLenNo,
                                                                    @Query("carTypeNo") String carTypeNo,
                                                                    @Query("functionNos") String functionNos,
                                                                    @Query("shipmentTime") Long shipmentTime,
                                                                    @Query("shipmentEndTime") Long shipmentEndTime);

    //取消支付解冻当前货源
    @POST("logistics/operate/goodsSource/unfreeze")
    Call<BaseEntity<PayInfoEntity>> unfreeze(@Body Map<String, Object> map);
    //2.2.1临时更改的司机获取接单
    @POST("logistics/operate/order/operateOrdinaryOrderTakingsTEMP")
    Call<BaseEntity<PayInfoEntity>> orderTaking(@Body GoodsOrderEntity goodsOrderEntity);

    //报价-确认接单
    @POST("logistics/operate/order/operateOrdinaryOrderTakings")
    Call<BaseEntity<PayInfoEntity>> getOrderTaking(@Body GoodsOrderEntity goodsOrderEntity);

    //普通货源司机-新接单
    @POST("logistics/operate/order/operateInquiryOrderTaking")
    Call<BaseEntity<PayInfoEntity>> getoperateInquiryOrderTaking(@Body GoodsOrderEntity goodsOrderEntity);

    //货源确认-接单
    @POST("logistics/operate/order/operateBiddingOrderTaking")
    Call<BaseEntity<PayInfoEntity>> getOrderBidding(@Body GoodsOrderEntity goodsOrderEntity);

    //车辆ocr识别
    @GET("logistics/operate/driverAuth/operateAuthOCR")
    Call<BaseEntity<DrivingLicenseOCREntity>> operateAuthOCR(@QueryMap Map<String, Object> map);

    //企业/团队车辆详情
    @GET("logistics/operate/driverAuth/operateDriverDetail")
    Call<BaseEntity<MyCarInfoEntity>> getGroupCarDetail(@Query("no") long no, @Query("type") int type);

    //企业/团队车辆列表
    @POST("logistics/operate/motorcadeDriver/carList")
    Call<BaseEntity<ListResponseV1<List<MyCarInfoEntity>>>> getGroupCarList(@Body Map<String, Object> map);

    //检查解绑车辆是否有订单绑定
    @GET("logistics/operate/motorcadeDriver/isHaveOrders")
    Call<BaseEntity<Boolean>> checkIsHaveOrders(@QueryMap Map<String, Object> map);

    //解绑司机
    @GET("logistics/operate/motorcadeDriver/looseDriver")
    Call<BaseEntity> unbindDriver(@Query("no") String no);

    //绑定司机
    @POST("logistics/operate/motorcadeDriver/boundDriver")
    Call<BaseEntity> bindDriver(@Body Map<String, Object> map);

    //完善车辆信息
    @POST("logistics/operate/driverAuth/operateAuth")
    Call<BaseEntity> authCar(@Body Map<String, Object> map);

    //绑定司机列表
    @GET("logistics/operate/motorcadeDriver/driverInfoByName")
    Call<BaseEntity<ListResponseV1<List<ProprietaryDriverEntity>>>> getDriverList(@QueryMap Map<String, Object> map);

    //司机绑定记录
    @GET("logistics/operate/motorcadeDriver/carBoundList")
    Call<BaseEntity<ListResponseV1<List<DriverBindRecordEntity>>>> getDriverBindRecord(@QueryMap Map<String, Object> map);

    //自营车队
    @POST("logistics/operate/motorcade/list")
    Call<BaseEntity<ListResponseV1<List<MotorcadListEntity>>>> getMotorcadList(@Body Map<String, Object> map);

    //挂靠车队列表
    @POST("logistics/operate/motorcade/pendantList")
    Call<BaseEntity<LinkedEntity>> getPendantList(@Body Map<String, Object> map);

    /***********自营司机相关接口*******/
    /**
     * 自营司机管理列表
     *
     * @param limit
     * @param pageNumber
     * @param linkState  0 全部 1 邀请中 2 已拒绝 3 已同意 4 已解除
     * @param type       1 自营 2 挂靠
     */
    @GET("logistics/operate/motorcade/self/driver/list")
    Call<BaseEntity<ListResponse2<List<ProprietaryDriverEntity>>>> getProDriverList(@Query("limit") int limit, @Query("pageNumber") int pageNumber,
                                                                                    @Query("linkState") Integer linkState, @Query("type") Integer type);

    /**
     * 自营司机详情
     */
    @GET("logistics/operate/motorcade/self/driver/detail")
    Call<BaseEntity<ProDriverDetailsEntity>> getProDriverDetails(@Query("no") String no);

    /**
     * 请求车队列表（挂靠/自营）
     */
    @POST("logistics/operate/motorcade/list")
    Call<BaseEntity<ListResponse2<List<MotorcadeSimpleEntity>>>> getMotorcadeList(@Body Map<String, Object> map);

    /**
     * 删除自营司机
     */
    @DELETE("logistics/operate/motorcade/remove/driver")
    Call<BaseEntity> deleteProDriver(@Query("no") String no);

    /**
     * 解绑自营司机
     */
    @GET("logistics/operate/motorcade/relieve/relation")
    Call<BaseEntity> unbindProDriver(@Query("no") String no);

    /**
     * 修改自营司机所属车队
     */
    @POST("logistics/operate/motorcade/self/motorcade/move")
    Call<BaseEntity> changeProDriverItem(@Body Map<String, Object> map);

    /**
     * 添加自营司机
     */
    @POST("logistics/operate/motorcade/self/motorcade/add")
    Call<BaseEntity> newAddProDriver(@Body Map<String, Object> map);

    /**
     * 根据手机号校验司机状态（自营司机添加）
     */
    @GET("logistics/operate/motorcade/check/self/driver")
    Call<BaseEntity<VerifyDriverEntity>> verifyDriverByPhone(@Query("telephone") String telephone);

    /**
     * 帮忙注册添加自营司机
     */
    @POST("logistics/operate/motorcade/help/register")
    Call<BaseEntity<Object>> newRegisterToProDriver(@Body Map<String, Object> map);

    /**
     * 获取手机验证码
     */
    @GET("logistics/operate/motorcade/send/code")
    Call<BaseEntity> getPhoneVerifyCode(@Query("telephone") String telephone);

    /**
     * 上传从业资格证（自营司机）
     */
    @POST("logistics/operate/motorcade/upload/certificate")
    Call<BaseEntity> uploadTransportCertificate(@Body Map<String, Object> map);

    @GET("logistics/operate/motorcade")
    Call<BaseEntity<AffiliatedFDetailsListEntity>> getmotorcade(@Query("limit") int limit, @Query("motorcadeNo") String motorcadeNo);

    // 新增-编辑企业自营车队
    @POST("logistics/operate/motorcade")
    Call<BaseEntity> subMitMotorcade(@Body Map<String, Object> map);

    //邀请挂靠列表
    @GET("logistics/operate/motorcade/selectByTeamName")
    Call<BaseEntity<ListResponse<List<AttachmentListEntity>>>> getselectByTeamName(@Query("teamName") String teamName, @Query("limit") int limit, @Query("page") int page);

    //团队（车队）详情
    @GET("logistics/operate/motorcade/motorcadeDetail")
    Call<BaseEntity<TeamRespVoEntity>> getMotorcadeDetail(@Query("no") String no);

    //添加邀请接口
    @POST("logistics/operate/motorcade/addOrUpdateAnchor")
    Call<BaseEntity> addOrUpdateAnchor(@Body Map<String, Object> map);

    //挂靠/自营详情接口
    @GET("logistics/operate/motorcade/selfMotorcadeDetail")
    Call<BaseEntity<AffiliatedFDetailsListEntity>> getSelfMotorcadeDetail(@Query("limit") int limit, @Query("motorcadeNo") String motorcadeNo, @Query("type") int type);

    // 企业自营和挂靠车队 车辆分页查询
    @GET("logistics/operate/motorcade/self/car")
    Call<BaseEntity<ListResponse<List<AffiliatedFCarEntity>>>> getCarList(@Query("limit") int limit, @Query("motorcadeNo") String motorcadeNo, @Query("pageNumber") int pageNumber, @Query("type") int type);

    //  企业自营和挂靠车队 司机 分页查询
    @GET("logistics/operate/motorcade/self/driver")
    Call<BaseEntity<ListResponse<List<AffiliatedFDriverEntity>>>> getDriverList(@Query("limit") int limit, @Query("motorcadeNo") String motorcadeNo, @Query("pageNumber") int pageNumber, @Query("type") int type);

    //车辆询价  2.1.7车辆和承运统一接口
    @POST("logistics/operate/index/appCarInquiry")
    Call<BaseEntity<String>> inquiryCar(@Body Map<String, Object> map);

    //查询所有的货物类型
    @GET("logistics/operate/goodsType")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> getGoodsTypeChooseData();

    //查询所有的货物类型
    @GET("logistics/operate/goodsType/fuzzy")
    Call<BaseEntity<List<GoodsInfoTypeEntity3>>> searchGoodsType(@Query("searchKey") String searchKey);

    //获取（会员、成员）信息
    @GET("logistics/operate/index/getMemberByType")
    Call<BaseEntity<ManageEntity<List<ManageListEntity>>>> getMemberByType(@Query("type") int type);

    //司机工作台
    @GET("logistics/operate/index/driverWorkbench")
    Call<BaseEntity<DriverWorkbenchEntity>> driverWorkbench();

    //货主工作台
    @GET("logistics/operate/index/shipperWorkbench")
    Call<BaseEntity<OwnerWorkbenchEntity>> ownerWorkbench();

    //检查货物类型
    @GET("logistics/operate/goodsType/check")
    Call<BaseEntity<String>> checkGoodsType(@Query("goodsModeNo") String goodsModeNo, @Query("secondGoodsTypeNo") String secondGoodsTypeNo);

    //检查货物类型
    @GET("logistics/operate/goodsType/check")
    Call<BaseEntity<List<TypeChooseEntity>>> checkPathGoodsType(@Query("data") String data, @Query("goodsModeNo") String goodsModeNo, @Query("secondGoodsTypeNo") String secondGoodsTypeNo);

    // 获取车辆详情driverAuthNo
    @GET("logistics/operate/driverAuth/operateVehicleDetails")
    Call<BaseEntity<VehicleDetail>> getFindCarVehicleDetail(@Query("driverAuthNo") String driverAuthNo);

    //用户物流权限
    @GET("logistics/operate/user/getPermissions")
    Call<BaseEntity<PermissionEntity>> getLogisticsPermissions();

    //查询询价权限
    @GET("logistics/operate/index/inquiryJudge")
    Call<BaseEntity<Boolean>> getInquiryPermissions(@Query("carNo") String carNo, @Query("carrierNo") String carrierNo);

    //个人中心-我的车辆详情
    @GET("logistics/operate/driverAuth/driverDetail/{no}")
    Call<BaseEntity<MyCarInfoEntity>> getCarDetail(@Path("no") long no);


    @GET("logistics/operate/contactPersonInfo")
    Call<BaseEntity<List<ChoiceOppositePersonEntity>>> getPoppositePerSonList(@Query("companyNo") String companyNo, @Query("name") String name);

    //获取三级地址列表
    @GET("logistics/freight/area/getAllAreaList")
    Call<BaseEntity<List<AddressEntity<List<AddressEntity<List<AddressEntity>>>>>>> getCityList();


    /************首页相关接口更换*****************************/
    //找货
    @POST("logistics/operate/index/indexGoodsSourceList")
    Call<BaseEntity<ProListEntity<List<GoodsInfoEntity>>>> getFilterSourceList(@Body Map map);

    //找货  (实体类不一样)
    @POST("logistics/operate/index/indexGoodsSourceList")
    Call<BaseEntity<ProListEntity<List<MapSourcesEntity>>>> getMapSourceList(@Body Map map);

    //货源搜索  (实体类不一样)    首页地图找货用这个借接口
    @POST("logistics/operate/index/indexGoodsSourceList")
    Call<BaseEntity<ProListEntity<List<MapSourceEntity>>>> getMapFindSource(@Body Map map);


    //司机找货（承运）--列表页面调用
    @POST("logistics/operate/index/indexBiddingFindCars")
    Call<BaseEntity<ProListEntity<List<CarriageInfo>>>> getListCarFindForGoods(@Body Map map);

    //司机找货（承运）--地图页面调用
    @POST("logistics/operate/index/indexBiddingFindCars")
    Call<BaseEntity<ProListEntity<List<MapCarEntity>>>> getMapCarFindForGoods(@Body Map map);


    //货车大厅--列表页面调用
    @POST("logistics/operate/index/indexVehicleLobbyList")
    Call<BaseEntity<ProListEntity<List<VehicleHallMapEntity>>>> getCarToList(@Body Map map);

    //货车大厅--地图页面调用
    @POST("logistics/operate/index/indexVehicleLobbyList")
    Call<BaseEntity<ProListEntity<List<VehicleHallMapEntity>>>> getCarToMap(@Body Map map);

    //找货车(首页调用)
    @POST("logistics/operate/index/indexVehicleLobbyList")
    Call<BaseEntity<ProListEntity<List<CarHallEntity>>>> getCarToMainPage(@Body Map map);

    //地图找车
    @POST("logistics/operate/index/indexVehicleLobbyList")
    Call<BaseEntity<ProListEntity<List<MapCarInfoEntity>>>> findCarByMap(@Body Map map);

    //物流首页搜索--货物
    @POST("logistics/operate/index/indexSearchByGoodsSource")
    Call<BaseEntity<ProListEntity<List<SearchGoodsEntity>>>> getGoodsBySearch(@Body Map map);

    //物流首页搜索--车辆
    @POST("logistics/operate/index/indexSearchByDriverAuth")
    Call<BaseEntity<ProListEntity<List<CarHallEntity>>>> getCarsBySearch(@Body Map map);


//货运大厅-校验货源是否有效
    @GET("logistics/operate/goodsSource/statusCheck")
    Call<BaseEntity<CheckStateEntity>> goodsSourceStatusCheck(@Query("no") String no);

    //更多承运信息
    @GET("logistics/operate/index/moreShippingInfo")
    Call<BaseEntity<ListResponse<List<CarrierDetailsEntity>>>> getCarriageList(
            @Query("userNo") String userNo, @Query("driverAuthNo") String driverAuthNo,
            @Query("page") String page, @Query("limit") String limit);

    //普通货源-司机报价  企业、团队
    @POST("logistics/operate/goodsOffer/general/offer/impersonal")
    Call<BaseEntity<String>> goodsGeneralOfferImpersonal(@Body GoodsOrderEntity goodsOrderEntity);

    //查询当前身份下所有的自营和挂靠车
    @GET("logistics/operate/motorcadeDriver/autotrophAndAffiliatedVehicle")
    Call<BaseEntity<List<CarInfo>>> autotrophAndAffiliatedVehicle(@Query("goodsSourceNo") String goodsSourceNo);

    //普通货源司机-企业/团队接单
    @POST("logistics/operate/order/ordinarySourcePlaceAnOrder")
    Call<BaseEntity<PayInfoEntity>> payOrder(@Body CompanyGoodsOrderEntity goodsOrderEntity);

    //能源类型
    @GET("logistics/operate/driverAuth/carEnergyType")
    Call<BaseEntity<List<EnergyTypeEntity>>> getCarEnergyType();
}